Terskelen for å ta R i bruk er høy. Det er mye å sette seg inn i før man kan bruke R på en god måte. En av fordelene til R er at det finnes gode verktøy til å lage avanserte figurer. Denne posten viser hvordan chatgpt, bing med flere kan brukes til å få koden som lager figurer.
Denne posten bygger på et seminar vi hadde på ISF der vi undersøkte hvor enkelt det er å gjenskape figurer i R ved hjelp av en chatbot. Vi bruke en kombinasjon av bing sin chatbot der man kan laste opp bilder og sikt sin KI-chat som er bygd på chatgpt. Siden ISFs interne retningslinjer sier at vi skal bruke Sikt sin KI-chat brukte vi den, men vi startet med bing fordi bing kan lese bilder. Dette gjør det enklere å bruke en chatbot fordi man ikke må vite hva navnet på figurtypen man er ute etter er. I det følgende blir samtalene vi hadde med chatboter referert sammen med figurene koden til chatboter lagde. Dessverre lagret jeg ikke bing sitt svar, men det er utgangspunktet for første spørsmål til KI-chaten.
ggplot(data, aes(x = Year, y = Value, color = Country, linetype = Variable)) +
geom_line(size = 1) +
scale_color_manual(values = farger) +
facet_wrap(~Country, ncol = 4) +
theme_bw() +
labs(title = "Antall nye partier og kombinert stemmeandel for nye partier i Europa",
x = "År",
y = "Antall / Andel") +
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(face = "bold"),
legend.position = "none")
Dette var ikke helt det vi var ute etter selv om det var ganske nært det vi ba om. Vi forsøkte å få chatboten til å ordne fargene.
Jeg har figuren under. Men jeg vil at stemmeandelen og antallet partier blir plottet begge to. Jeg vil at fargene skal være forskjellige ikke per land men hvorvidt det er stemmeandel eller antall partier
ggplot(data, aes(x = Year, y = Value, color = Country, linetype = Variable)) +
geom_line(size = 1) +
scale_color_manual(values = farger) +
facet_wrap(~Country, ncol = 4) +
theme_bw() +
labs(title = "Antall nye partier og kombinert stemmeandel for nye partier i Europa",
x = "Ar",
y = "Antall / Andel") +
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(face = "bold"),
legend.position = "none")
Fra det jeg kan forstå fra kodeeksemplet ditt, vil du at ‘Variable’ (som representerer ‘stemmeandel’ og ‘antall partier’) skal ha forskjellige farger, ikke ‘Country’. For å oppnå dette, kan du endre ‘color’-attributtet i ‘aes’ til ‘Variable’ i stedet for ‘Country’. Her er hvordan du kan gjøre det:
ggplot(data, aes(x = Year, y = Value, color = Variable, linetype = Variable)) +
geom_line(size = 1) +
scale_color_manual(values = farger) +
facet_wrap(~Country, ncol = 4) +
theme_bw() +
labs(title = "Antall nye partier og kombinert stemmeandel for nye partier i Europa",
x = "Ar",
y = "Antall / Andel") +
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(face = "bold"),
legend.position = "none")
I denne endrede koden, vil både ‘color’ og ‘linetype’ avhenge av ‘Variable’, noe som vil gi deg forskjellige farger og linjetyper for ‘stemmeandel’ og ‘antall partier’. ‘farger’ skal være en vektor med farger som du vil bruke for hver av variablene.
Men jeg vil at det skal være to linjer per land. en for antall og en for andel
For å oppnå dette, bør du sørge for at datasettet ditt er i langt format, hvor hver observasjon er en rad. Hvis “Variable” kolonnen din inneholder både “stemmeandel” og “antall partier”, vil ggplot automatisk tegne to linjer for hvert land. Hver linje vil representere en av variablene. Her er hvordan du kan endre koden:
ggplot(data, aes(x = Year, y = Value, color = Variable, linetype = Variable)) +
geom_line(size = 1) +
scale_color_manual(values = farger) + # Erstatt "farge1", "farge2" med fargene du vil bruke
facet_wrap(~Country, ncol = 4) +
theme_bw() +
labs(title = "Antall nye partier og kombinert stemmeandel for nye partier i Europa",
x = "Ar",
y = "Antall / Andel") +
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(face = "bold"))
I denne koden, vil ‘color’ og ‘linetype’ være basert på ‘Variable’, noe som betyr at du vil få to forskjellige farger og linjetyper for ‘stemmeandel’ og ‘antall partier’. Jeg har fjernet legend.position = "none"
for å vise fargene til de forskjellige variablene i legenden.
Husk å erstatte “farge1”, “farge2” i scale_color_manual
med de faktiske fargene du vil bruke. Hvis du vil bruke mer enn to farger, kan du legge til flere farger i vektoren.
Kan du lage et datasett med kunstige data for antall nye partier og partiandel av stemmene som passer til figuren?
Absolutt, her er et eksempel på et kunstig datasett og en tilsvarende ggplot-figur:
# Laste inn nødvendige pakker
library(tidyr)
library(dplyr)
library(ggplot2)
# Opprette kunstig datasett
set.seed(123)
data <- data.frame(
Year = rep(2000:2010, times = 6),
Country = rep(c("Country1", "Country2", "Country3"), each = 22),
Variable = rep(c("Antall partier", "Stemmeandel"), times = 33),
Value = c(sample(1:10, 33, replace = TRUE), runif(33, min = 0, max = 1))
)
# Plotte data
ggplot(data, aes(x = Year, y = Value, color = Variable, linetype = Variable)) +
geom_line(size = 1) +
scale_color_manual(values = c("blue", "red")) +
facet_wrap(~Country, ncol = 1) +
theme_bw() +
labs(title = "Antall nye partier og kombinert stemmeandel for nye partier i Europa",
x = "Ar",
y = "Antall / Andel") +
theme(plot.title = element_text(hjust = 0.5),
axis.title = element_text(face = "bold"))
I dette eksempelet har vi tre land (“Country1”, “Country2”, “Country3”) og to variabler (“Antall partier”, “Stemmeandel”). “Antall partier” er tilfeldige heltall mellom 1 og 10, og “Stemmeandel” er tilfeldige flyttall mellom 0 og 1. Begge er generert for årene 2000 til 2010. Dataene er deretter plottet med ggplot, med forskjellige farger for hver variabel.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Solheim (2024, Aug. 23). Solheim: Kan man bruke chatboter til å lage figurer i R?. Retrieved from https://www.oyvindsolheim.com/code/Lage figurer med hjelp av chatbot/
BibTeX citation
@misc{solheim2024kan, author = {Solheim, Øyvind Bugge}, title = {Solheim: Kan man bruke chatboter til å lage figurer i R?}, url = {https://www.oyvindsolheim.com/code/Lage figurer med hjelp av chatbot/}, year = {2024} }